// 实现 strStr() 函数。
// 给你两个字符串 haystack 和 needle ，请你在 haystack 字符串中找出 needle 字符串出现的第一个位置（下标从 0 开始）。如果不存在，则返回  -1 。
//  
// 说明：
// 当 needle 是空字符串时，我们应当返回什么值呢？这是一个在面试中很好的问题。
// 对于本题而言，当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。

function strStr(haystack: string, needle: string): number {
    const length0 = haystack.length
    const lenght1 = needle.length
    if (lenght1 === 0) {
        return 0
    }
    for (let i = 0; i < length0; i++) {
        const str = haystack.slice(i, i + lenght1)
        if (str === needle) {
            return i
        }
    }
    return -1
};


function strStr2(haystack, needle) {
    if (!needle) {
        console.log('0')
        return 0;
    }
    if (needle.length > haystack.length) {
        console.log('-1')
        return -1;
    }
    const x = needle[0];
    let result = -1;
    const length = needle.length;
    for (let i = 0; i < haystack.length; i++) {
        let flag = false;
        let k = 0;
        if (haystack[i] === x) {

            for (let j = i; j < i + length; j++) {
                console.log('haystack[j]-----------------------', haystack[j], needle[k]);
                if (haystack[j] !== needle[k++]) {
                    console.log('break', j)
                    break;
                }
                flag = haystack[j] === needle[k];
                console.log('flag:', flag, j);
            }
            console.log('执行完成', flag);
            if (flag) {
                result = i;
                console.log(result);
                return result;
            }
        }
    }
    console.log(result);
    return result;
};
